MP4Box [option] input [option]
 -h general           general options help
 -h hint              hinting options help
 -h dash              DASH segmenter help
 -h import            import options help
 -h encode            encode options help
 -h meta              meta handling options help
 -h extract           extraction options help
 -h dump              dump options help
 -h swf               Flash (SWF) options help
 -h crypt             ISMA E&A options help
 -h format            supported formats help
 -h rtp               file streamer help
 -h live              BIFS streamer help
 -h all               all options are printed

 -nodes               lists supported MPEG4 nodes
 -node NodeName       gets MPEG4 node syntax and QP info
 -xnodes              lists supported X3D nodes
 -xnode NodeName      gets X3D node syntax
 -snodes              lists supported SVG nodes
 -snode NodeName      gets SVG node syntax
 -languages           lists supported ISO 639 languages

 -quiet                quiet mode
 -noprog               disables progress
 -v                   verbose mode
 -logs                set log tools and levels, formatted as a ':'-separated list of toolX[:toolZ]@levelX
 -version             gets build version
 -- INPUT             escape option if INPUT starts with - character

General Options:
 -strict-error        exits after the first error is reported
 -inter time_in_ms    interleaves file data (track chunks of time_in_ms)
                       * Note 1: Interleaving is 0.5s by default
                       * Note 2: Performs drift checking accross tracks
                       * Note 3: a value of 0 disables interleaving
 -old-inter time      same as -inter but doesn't perform drift checking
 -tight               performs tight interleaving (sample based) of the file
                       * Note: reduces disk seek but increases file size
 -flat                stores file with all media data first, non-interleaved
 -frag time_in_ms     fragments file (track fragments of time_in_ms)
                       * Note: Always disables interleaving
 -ffspace size        inserts free space before moof in fragmented files
 -out filename        specifies output file name
                       * Note: By default input (MP4,3GP) file is overwritten
 -tmp dirname         specifies directory for temporary file creation
                       * Note: Default temp dir is OS-dependent
 -write-buffer SIZE   specifies write buffer in bytes for ISOBMF files
 -no-sys              removes all MPEG-4 Systems info except IOD (profiles)
                       * Note: Set by default whith '-add' and '-cat'
 -no-iod              removes InitialObjectDescriptor from file
 -isma                rewrites the file as an ISMA 1.0 AV file
 -ismax               same as '-isma' and removes all clock references
 -3gp                 rewrites as 3GPP(2) file (no more MPEG-4 Systems Info)
                       * Note 1: some tracks may be removed in the process
                       * Note 2: always on for *.3gp *.3g2 *.3gpp
 -ipod                rewrites the file for iPod
 -psp                 rewrites the file for PSP devices
 -brand ABCD[:v]      sets major brand of file, with optional version
 -ab ABCD             adds given brand to file's alternate brand list
 -rb ABCD             removes given brand from file's alternate brand list
 -cprt string         adds copyright string to movie
 -chap file           adds chapter information contained in file
 -set-track-id id1:id2 changes the id of a track from id1 to id2
 -rem trackID         removes track from file
 -rap trackID         removes all non-RAP samples from track
 -enable trackID      enables track
 -disable trackID     disables track
 -new                 forces creation of a new destination file
 -timescale VAL       sets movie timescale to VAL ticks per second (default is 600).
 -lang [tkID=]LAN     sets track language. LAN is the BCP-47 code (eng, en-UK, ...)
 -delay tkID=TIME     sets track start delay in ms.
 -par tkID=PAR        sets visual track pixel aspect ratio (PAR=N:D or "none")
 -name tkID=NAME      sets track handler name
                       * NAME can indicate a UTF-8 file ("file://file name"
 -itags tag1[:tag2]   sets iTunes tags to file - more info: MP4Box -tag-list.
 -split time_sec      splits in files of time_sec max duration
                       * Note: this removes all MPEG-4 Systems media
 -split-size size     splits in files of max filesize kB. same as -splits.
                       * Note: this removes all MPEG-4 Systems media
 -split-rap           splits in files begining at each RAP. same as -splitr.
                       * Note: this removes all MPEG-4 Systems media
 -split-chunk S:E     extracts a new file from Start to End (in seconds). same as -splitx
                       * Note: this removes all MPEG-4 Systems media
 -splitz S:E          same as -split-chunk, but adjust the end time to be before the last RAP sample
                       * Note: this removes all MPEG-4 Systems media
 -group-add fmt       creates a new grouping information in the file. Format is
                      a colon-separated list of following options:
                      refTrack=ID: ID of the track used as a group reference.
                       If not set, the track will belong to the same group as the previous trackID specified.
                       If 0 or no previous track specified, a new alternate group will be created
                      switchID=ID: ID of the switch group to create.
                       If 0, a new ID will be computed for you
                       If <0, disables SwitchGroup
                      criteria=string: list of space-separated 4CCs.
                      trackID=ID: ID of the track to add to this group.

                       *WARNING* Options modify state as they are parsed:
                        trackID=1:criteria=lang:trackID=2
                       is different from:
                        criteria=lang:trackID=1:trackID=2

 -group-rem-track ID  removes track from its group
 -group-rem ID        removes the track's group
 -group-clean         removes all group information from all tracks
 -group-single        puts all tracks in a single group
 -ref id:XXXX:refID   adds a reference of type 4CC from track ID to track refID
 -keep-utc            keeps UTC timing in the file after edit
 -udta ID:[OPTS]      sets udta for given track or movie if ID is 0. OPTS is a colon separated list of:
        type=CODE     where code is the 4CC code of the UDTA (not needed for box= option)
        box=FILE	          where FILE is the location of the udta data, formatted as serialized boxes
        box=base64,DATA      where DATA is the base64 encoded udta data, formatted as serialized boxes
        src=FILE	          where FILE is the location of the udta data (will be stored in a single box of type CODE)
        src=base64,DATA      where DATA is the base64 encoded udta data (will be stored in a single box of type CODE)
	                   If no source is set, UDTA of type CODE will be removed

Hinting Options
 -hint                hints the file for RTP/RTSP
 -mtu size            specifies RTP MTU (max size) in bytes. Default size is 1450
                       * Note: this includes the RTP header (12 bytes)
 -copy                copies media data to hint track rather than reference
                       * Note: speeds up server but takes much more space
 -multi [maxptime]    enables frame concatenation in RTP packets if possible
        maxptime       max packet duration in ms (optional, default 100ms)
 -rate ck_rate        specifies rtp rate in Hz when no default for payload
                       * Note: default value is 90000 (MPEG rtp rates)
 -mpeg4               forces MPEG-4 generic payload whenever possible
 -latm                forces MPG4-LATM transport for AAC streams
 -static              enables static RTP payload IDs whenever possible
                       * By default, dynamic payloads are always used

MPEG-4 Generic Payload Options
 -ocr                 forces all streams to be synchronized
                       * Most RTSP servers only support synchronized streams
 -rap                 signals random access points in RTP packets
 -ts                  signals AU Time Stamps in RTP packets
 -size                signals AU size in RTP packets
 -idx                 signals AU sequence numbers in RTP packets
 -iod                 prevents systems tracks embedding in IOD
                       * Note: shouldn't be used with -isma option

 -add-sdp string      adds sdp string to (hint) track ("-add-sdp tkID:string")
                       or movie. This will take care of SDP lines ordering
 -unhint              removes all hinting information.

DASH Options:
 -dash dur            enables DASH-ing of the file(s) with a segment duration of DUR ms
                       Note: the duration of a fragment (subsegment) is set
						using the -frag switch.
                       Note: for onDemand profile, sets duration of a subsegment
 -dash-live[=F] dur   generates a live DASH session using dur segment duration, optionnally writing live context to F
                       MP4Box will run the live session until 'q' is pressed or a fatal error occurs.
 -ddbg-live[=F] dur   same as -dash-live without time regulation for debug purposes.
 -frag time_in_ms     Specifies a fragment duration of time_in_ms.
                       * Note: By default, this is the DASH duration
 -out filename        specifies output MPD file name.
 -tmp dirname         specifies directory for temporary file creation
                       * Note: Default temp dir is OS-dependent
 -profile NAME        specifies the target DASH profile: "onDemand",
                       "live", "main", "simple", "full",
                       "dashavc264:live", "dashavc264:onDemand"
                       * This will set default option values to ensure conformance to the desired profile
                       * Default profile is "full" in static mode, "live" in dynamic mode

Input media files to dash can use the following modifiers
 "#trackID=N"       only uses the track ID N from the source file
 "#video"           only uses the first video track from the source file
 "#audio"           only uses the first video track from the source file
 ":id=NAME"         sets the representation ID to NAME
 ":period=NAME"     sets the representation's period to NAME. Multiple periods may be used
                       period appear in the MPD in the same order as specified with this option
 ":bandwidth=VALUE" sets the representation's bandwidth to a given value
 ":duration=VALUE"  Increases the duration of this period by the given duration in seconds
                       only used when no input media is specified (remote period insertion), eg :period=X:xlink=Z:duration=Y.
 ":xlink=VALUE"     sets the xlink value for the period containing this element
                       only the xlink declared on the first rep of a period will be used
 ":role=VALUE"      sets the role of this representation (cf DASH spec).
                       media with different roles belong to different adaptation sets.
 ":desc_p=VALUE"    adds a descriptor at the Period level. Value must be a properly formatted XML element.
 ":desc_as=VALUE"   adds a descriptor at the AdaptationSet level. Value must be a properly formatted XML element.
                       two input files with different values will be in different AdaptationSet elements.
 ":desc_as_c=VALUE" adds a descriptor at the AdaptationSet level. Value must be a properly formatted XML element.
                       value is ignored while creating AdaptationSet elements.
 ":desc_rep=VALUE"  adds a descriptor at the Representation level. Value must be a properly formatted XML element.
                       value is ignored while creating AdaptationSet elements.

 -rap                 segments begin with random access points
                       Note: segment duration may not be exactly what asked by
                       "-dash" since encoded video data is not modified
 -frag-rap            All fragments begin with random access points
                       Note: fragment duration may not be exactly what is asked by
                       "-frag" since encoded video data is not modified
 -segment-name name   sets the segment name for generated segments
                       If not set (default), segments are concatenated in output file
                        except in "live" profile where dash_%s is used
 -segment-ext name    sets the segment extension. Default is m4s, "null" means no extension
 -segment-timeline    uses SegmentTimeline when generating segments.
 -segment-marker MARK adds a box of type 'MARK' at the end of each DASH segment. MARK shall be a 4CC identifier
 -base-url string     sets Base url at MPD level. Can be used several times.
 -mpd-title string    sets MPD title.
 -mpd-source string   sets MPD source.
 -mpd-info-url string sets MPD info url.
 -cprt string         adds copyright string to MPD
 -dash-ctx FILE       stores/restore DASH timing from FILE.
 -dynamic             uses dynamic MPD type instead of static.
 -mpd-duration DUR    sets the duration in second of a live session (0 by default). If 0, you must use -mpd-refresh.
 -mpd-refresh TIME    specifies MPD update time in seconds.
 -time-shift  TIME    specifies MPD time shift buffer depth in seconds (default 0). Specify -1 to keep all files
 -subdur DUR          specifies maximum duration in ms of the input file to be dashed in LIVE or context mode.
                       NOTE: This does not change the segment duration: dashing stops once segments produced exceeded the duration.
 -min-buffer TIME     specifies MPD min buffer time in milliseconds
 -ast-offset TIME     specifies MPD AvailabilityStartTime offset in seconds. Default is 1 sec delay
 -dash-scale SCALE    specifies that timing for -dash and -frag are expressed in SCALE units per seconds
 -mem-frags           fragments will be produced in memory rather than on disk before flushing to disk
 -pssh-moof           stores PSSH boxes in first moof of each segments. By default PSSH are stored in movie box.
 -sample-groups-traf  stores sample group descriptions in traf (duplicated for each traf) rather than in moof. By default sample group descriptions are stored in movie box.

Advanced Options, should not be needed when using -dash-profile:
 -subsegs-per-sidx N  sets the number of subsegments to be written in each SIDX box
                       If 0, a single SIDX box is used per segment
                       If -1, no SIDX box is used
 -url-template        uses SegmentTemplate instead of explicit sources in segments.
                       Ignored if segments are stored in the output file.
 -daisy-chain         uses daisy-chain SIDX instead of hierarchical. Ignored if frags/sidx is 0.
 -single-segment      uses a single segment for the whole file (OnDemand profile). 
 -single-file         uses a single file for the whole file (default). 
 -bs-switching MODE   sets bitstream switching to "inband" (default), "merge", "multi", "no" or "single" to test with single input.
 -moof-sn N           sets sequence number of first moof to N
 -tfdt N              sets TFDT of first traf to N in SCALE units (cf -dash-scale)
 -no-frags-default    disables default flags in fragments
 -single-traf         uses a single track fragment per moof (smooth streaming and derived specs may require this)
 -dash-ts-prog N      program_number to be considered in case of an MPTS input file.

Importing Options

File importing syntax:
 "#video" "#audio"  base import for most AV files
 "#trackID=ID"        track import for IsoMedia and other files
 "#pid=ID"            stream import from MPEG-2 TS
 ":dur=D"             imports only the first D seconds
 ":lang=LAN"          sets imported media language code
 ":delay=delay_ms"    sets imported media initial delay in ms
 ":par=PAR"           sets visual pixel aspect ratio (PAR=Num:Den)
 ":name=NAME"         sets track handler name
 ":ext=EXT"           overrides file extension when importing
 ":hdlr=code"         sets track handler type to the given code point (4CC)
 ":disable"           imported track(s) will be disabled
 ":group=G"           adds the track as part of the G alternate group.
                         If G is 0, the first available GroupID will be picked.
 ":fps=VAL"           same as -fps option
 ":rap"               imports only RAP samples
 ":trailing"          keeps trailing 0-bytes in AVC/HEVC samples
 ":agg=VAL"           same as -agg option
 ":dref"              same as -dref option
 ":nodrop"            same as -nodrop option
 ":packed"            same as -packed option
 ":sbr"               same as -sbr option
 ":sbrx"              same as -sbrx option
 ":ovsbr"             same as -ovsbr option
 ":ps"                same as -ps option
 ":psx"               same as -psx option
 ":mpeg4"             same as -mpeg4 option
 ":svc"               import SVC/SHVC with explicit signaling (no AVC base compatibility)
 ":nosvc"             discard SVC/SHVC data when importing
 ":svcmode=MODE"      sets SVC/SHVC import mode:
 "                       split : each layer is in its own track
 "                       merge : all layers are merged in a single track
 "                       splitbase : all layers are merged in a track, and the AVC base in another
 "                       splitnox : each layer is in its own track, and no extractors are written
 ":subsamples"        adds SubSample information for AVC+SVC
 ":forcesync"         forces non IDR samples with I slices to be marked as sync points (AVC GDR)
       !! RESULTING FILE IS NOT COMPLIANT WITH THE SPEC but will fix seeking in most players
 ":xps_inband"        Sets xPS inband for AVC/H264 and HEVC (fore reverse operation, re-import from raw media)
 ":negctts"           uses negative CTS-DTS offsets (ISO4 brand)
 ":stype=4CC"         forces the sample description type to a different value
                         !! THIS MAY BREAK THE FILE WRITING !!
 ":chap"              specifies the track is a chapter track
 ":chapter=NAME"      adds a single chapter (old nero format) with given name lasting the entire file
                         This command can be used in -cat as well
 ":chapfile=file"     adds a chapter file (old nero format)
                         This command can be used in -cat as well
 ":layout=WxHxXxY"    specifies the track layout
                         - if W (resp H) = 0, the max width (resp height) of
                         the tracks in the file are used.
                         - if Y=-1, the layout is moved to the bottom of the
                         track area
                         - X and Y can be omitted (:layout=WxH)
 ":rescale=TS"        forces media timescale to TS !! changes the media duration
 ":timescale=TS"      sets import timescale to TS
 ":noedit"            do not set edit list when importing B-frames video tracks
 ":rvc=FILENAME"      sets TVC configuration for the media
 ":fmt=FORMAT"        overrides format detection with given format (cf BT/XMTA doc)
 ":profile=INT"       overrides AVC profile
 ":level=INT"         overrides AVC level
 ":font=name"         specifies font name for text import (default "Serif")
 ":size=s"            specifies font size for text import (default 18)
 ":text_layout=WxHxXxY"    specifies the track text layout
                         - if W (resp H) = 0, the max width (resp height) of
                         the tracks in the file are used.
                         - if Y=-1, the layout is moved to the bottom of the
                         track area
                         - X and Y can be omitted (:layout=WxH)
 ":swf-global"        all SWF defines are placed in first scene replace
                         * Note: By default SWF defines are sent when needed
 ":swf-no-ctrl"       uses a single stream for movie control and dictionary
                         * Note: this will disable ActionScript
 ":swf-no-text"       removes all SWF text
 ":swf-no-font"       removes all embedded SWF Fonts (terminal fonts used)
 ":swf-no-line"       removes all lines from SWF shapes
 ":swf-no-grad"       removes all gradients from swf shapes
 ":swf-quad"          uses quadratic bezier curves instead of cubic ones
 ":swf-xlp"           support for lines transparency and scalability
 ":swf-ic2d"          uses indexed curve 2D hardcoded proto
 ":swf-same-app"      appearance nodes are reused
 ":swf-flatten=ang"   complementary angle below which 2 lines are merged
                         * Note: angle '0' means no flattening
 ":kind=SCHEMA:type"  sets kind for the track
 ":txtflags=flags"    sets display flags (hexa number) of text track
 ":txtflags+=flags"   adds display flags (hexa number) to text track
 ":txtflags-=flags"   removes display flags (hexa number) from text track

 -add file              add file tracks to (new) output file
 -cat file              concatenates file samples to (new) output file
                         * Note: creates tracks if needed
                         * Note: aligns initial timestamp of the file to be concatenated.
 -catx file             same as cat but new tracks can be imported before concatenation by specifying '+ADD_COMMAND'
                        where ADD_COMMAND is a regular -add syntax
 -unalign-cat           does not attempt to align timestamps of samples inbetween tracks
 -force-cat             skips media configuration check when concatenating file
                         !!! THIS MAY BREAK THE CONCATENATED TRACK(S) !!!
 -keep-sys              keeps all MPEG-4 Systems info when using '-add' / 'cat'
 -keep-all              keeps all existing tracks when using '-add'
                         * Note: only used when adding IsoMedia files

All the following options can be specified as default or for each track.
When specified by track the syntax is ":opt" or ":opt=val".

 -dref                  keeps media data in original file
 -no-drop               forces constant FPS when importing AVI video
 -packed                forces packed bitstream when importing raw ASP
 -sbr                   backward compatible signaling of AAC-SBR
 -sbrx                  non-backward compatible signaling of AAC-SBR
 -ps                    backward compatible signaling of AAC-PS
 -psx                   non-backward compatible signaling of AAC-PS
 -ovsbr                 oversample SBR
                         * Note: SBR AAC, PS AAC and oversampled SBR cannot be detected at import time
 -fps FPS               forces frame rate for video and SUB subtitles import
                         FPS is either a number or expressed as timescale-increment
                         * For raw H263 import, default FPS is 15
                         * For all other imports, default FPS is 25
                         !! THIS IS IGNORED FOR IsoMedia IMPORT !!
 -mpeg4                 forces MPEG-4 sample descriptions when possible (3GPP2)
                         For AAC, forces MPEG-4 AAC signaling even if MPEG-2
 -agg N                 aggregates N audio frames in 1 sample (3GP media only)
                         * Note: Maximum value is 15 - Disabled by default

MPEG-4 Scene Encoding Options
 -mp4                 specify input file is for encoding.
 -def                 encode DEF names
 -sync time_in_ms     forces BIFS sync sample generation every time_in_ms
                       * Note: cannot be used with -shadow
 -shadow time_ms      forces BIFS sync shadow sample generation every time_ms.
                       * Note: cannot be used with -sync
 -log                 generates scene codec log file if available
 -ms file             specifies file for track importing

Chunk Processing
 -ctx-in file         specifies initial context (MP4/BT/XMT)
                       * Note: input file must be a commands-only file
 -ctx-out file        specifies storage of updated context (MP4/BT/XMT)

LASeR Encoding options
 -resolution res      resolution factor (-8 to 7, default 0)
                       all coords are multiplied by 2^res before truncation
 -coord-bits bits     bits used for encoding truncated coordinates
                       (0 to 31, default 12)
 -scale-bits bits     extra bits used for encoding truncated scales
                       (0 to 4, default 0)
 -auto-quant res      resolution is given as if using -resolution
                       but coord-bits and scale-bits are infered
Meta handling Options
 -set-meta args       sets given meta type - syntax: "ABCD[:tk=ID]"
                       * ABCD: four char meta type (NULL or 0 to remove meta)
                       * [:tk=ID]: if not set use root (file) meta
                                if ID is 0 use moov meta
                                if ID is not 0 use track meta
 -add-item args       adds resource to meta
                       * syntax: file_path + options (':' separated):
                        tk=ID: meta addressing (file, moov, track)
                        name=str: item name
                        mime=mtype: item mime type
                        encoding=enctype: item content-encoding type
                        id=id: item ID
                       * file_path "this" or "self": item is the file itself
 -rem-item args       removes resource from meta - syntax: item_ID[:tk=ID]
 -set-primary args    sets item as primary for meta - syntax: item_ID[:tk=ID]
 -set-xml args        sets meta XML data
                       * syntax: xml_file_path[:tk=ID][:binary]
 -rem-xml [tk=ID]     removes meta XML data
 -dump-xml args       dumps meta XML to file - syntax file_path[:tk=ID]
 -dump-item args      dumps item to file - syntax item_ID[:tk=ID][:path=fileName]
 -package             packages input XML file into an ISO container
                       * all media referenced except hyperlinks are added to file
 -mgt                 packages input XML file into an MPEG-U widget with ISO container.
                       * all files contained in the current folder are added to the widget package

Extracting Options:
 -raw TrackID         extracts track in raw format when supported
                      :output=FileName sets the output filename for this extraction 
 -raws TrackID        extract each track sample to a file
                       * Note: "TrackID:N" extracts Nth sample
 -nhnt TrackID        extracts track in nhnt format
 -nhml TrackID        extracts track in nhml format (XML nhnt).
                       * Note: "-nhml TrackID:full" for full dump
 -webvtt-raw TrackID  extracts raw media track in WebVTT as metadata.
                       * Note: "-webvtt-raw TrackID:embedded" to include media data in the WebVTT file
 -six TrackID		   extracts raw media track in experimental XML streaming instructions.
 -single TrackID      extracts track to a new mp4 file
 -avi TrackID         extracts visual track to an avi file
 -qcp TrackID         same as '-raw' but defaults to QCP file for EVRC/SMV
 -aviraw TK           extracts AVI track in raw format
			            $TK can be one of "video" "audio" "audioN"
 -saf                 remux file to SAF multiplex
 -dvbhdemux           demux DVB-H file into IP Datagrams
                       * Note: can be used when encoding scene descriptions
 -raw-layer ID        same as -raw but skips SVC/MVC extractors when extracting
 -diod                extracts file IOD in raw format when supported

 -grab-ts IP:port     grabs TS over UDP or RTP at IP:port location to output TS file
 -ifce IFCE           indicates default ifce for grab operations

Dumping Options
 -stdb                dumps/write to stdout and assumes stdout is opened in binary mode
 -std                 dumps/write to stdout and try to reopen stdout in binary mode.
 -info [trackID]      prints movie info / track info if trackID specified
                       * Note: for non IsoMedia files, gets import options
 -bt                  scene to bt format - removes unknown MPEG4 nodes
 -xmt                 scene to XMT-A format - removes unknown MPEG4 nodes
 -wrl                 scene VRML format - removes unknown VRML nodes
 -x3d                 scene to X3D/XML format - removes unknown X3D nodes
 -x3dv                scene to X3D/VRML format - removes unknown X3D nodes
 -lsr                 scene to LASeR format
 -diso                scene IsoMedia file boxes in XML output
 -drtp                rtp hint samples structure to XML output
 -dts                 prints sample timing to text output
 -dnal trackID        prints NAL sample info of given track
 -sdp                 dumps SDP description of hinted file
 -dcr                 ISMACryp samples structure to XML output
 -dump-cover          Extracts cover art
 -dump-chap           Extracts chapter file
 -dump-udta [ID:]4cc  Extracts udta for the given 4CC. If ID is given, dumps from UDTA of the given track ID, otherwise moov is used.

 -ttxt                Converts input subtitle to GPAC TTXT format
 -ttxt TrackID        Dumps Text track to GPAC TTXT format
 -srt                 Converts input subtitle to SRT format
 -srt TrackID         Dumps Text track to SRT format

 -stat                generates node/field statistics for scene
 -stats               generates node/field statistics per MPEG-4 Access Unit
 -statx               generates node/field statistics for scene after each AU

 -hash                generates SHA-1 Hash of the input file
 -bin                 converts input XML file using NHML bitstream syntax to binary

SWF Importer Options

MP4Box can import simple Macromedia Flash files (".SWF")
You can specify a SWF input file with '-bt', '-xmt' and '-mp4' options

 -global              all SWF defines are placed in first scene replace
                       * Note: By default SWF defines are sent when needed
 -no-ctrl             uses a single stream for movie control and dictionary
                       * Note: this will disable ActionScript
 -no-text             removes all SWF text
 -no-font             removes all embedded SWF Fonts (terminal fonts used)
 -no-line             removes all lines from SWF shapes
 -no-grad             removes all gradients from swf shapes
 -quad                uses quadratic bezier curves instead of cubic ones
 -xlp                 support for lines transparency and scalability
 -flatten ang         complementary angle below which 2 lines are merged
                       * Note: angle '0' means no flattening

ISMA Encryption/Decryption Options
 -crypt drm_file      crypts a specific track using ISMA AES CTR 128
 -decrypt [drm_file]  decrypts a specific track using ISMA AES CTR 128
                       * Note: drm_file can be omitted if keys are in file
 -set-kms kms_uri     changes KMS location for all tracks or a given one.
                       * to address a track, use 'tkID=kms_uri'

DRM file syntax for GPAC ISMACryp:
                      File is XML and shall start with xml header
                      File root is an "ISMACryp" element
                      File is a list of "cryptrack" elements

cryptrack attributes are
 TrackID              ID of track to en/decrypt
 key                  AES-128 key formatted (hex string '0x'+32 chars)
 salt                 CTR IV salt key (64 bits) (hex string '0x'+16 chars)

Encryption only attributes:
 Scheme_URI           URI of scheme used
 KMS_URI              URI of key management system
                       * Note: 'self' writes key and salt in the file
 selectiveType        selective encryption type - understood values are:
   "None"             all samples encrypted (default)
   "RAP"              only encrypts random access units
   "Non-RAP"          only encrypts non-random access units
   "Rand"             random selection is performed
   "X"                Encrypts every first sample out of X (uint)
   "RandX"            Encrypts one random sample out of X (uint)

 ipmpType             IPMP Signaling Type: None, IPMP, IPMPX
 ipmpDescriptorID     IPMP_Descriptor ID to use if IPMP(X) is used
                       * If not set MP4Box will generate one for you

Supported raw formats and file extensions:
 NHNT                 .media .nhnt .info
 NHML                 .nhml (opt: .media .info)
 MPEG-1-2 Video       .m1v .m2v
 MPEG-4 Video         .cmp .m4v
 H263 Video           .263 .h263
 AVC/H264 Video       .h264 .h26L .264 .26L .x264 .svc
 HEVC Video          .hevc .h265 .265 .hvc .shvc
 JPEG Images          .jpg .jpeg
 PNG Images           .png
 MPEG 1-2 Audio       .mp3, .m1a, .m2a
 ADTS-AAC Audio       .aac
 AMR(WB) Audio        .amr .awb
 EVRC Audio           .evc
 SMV Audio            .smv

Supported containers and file extensions:
 AVI                  .avi
 MPEG-2 PS            .mpg .mpeg .vob .vcd .svcd
 MPEG-2 TS            .ts .m2t
 QCP                  .qcp
 OGG                  .ogg
 ISO-Media files      no extension checking

Supported text formats:
 SRT Subtitles        .srt
 SUB Subtitles        .sub
 GPAC Timed Text      .ttxt
 QuickTime TeXML Text .xml  (cf QT documentation)

Supported Scene formats:
 MPEG-4 XMT-A         .xmt .xmta .xmt.gz .xmta.gz
 MPEG-4 BT            .bt .bt.gz
 VRML                 .wrl .wrl.gz
 X3D-XML              .x3d .x3d.gz
 X3D-VRML             .x3dv .x3dv.gz
 MacroMedia Flash     .swf (very limited import support only)

File Streamer Options

MP4Box can stream ISO files to RTP. The streamer currently doesn't support
data carrouselling and will therefore not handle BIFS and OD streams properly.

-rtp         enables streamer
-noloop      disables looping when streaming
-mpeg4       forces MPEG-4 ES Generic for all RTP streams
-dst=IP      IP destination (uni/multi-cast). Default: 127.0.0.1
-port=PORT   output port of the first stream. Default: 7000
-mtu=MTU     path MTU for RTP packets. Default is 1450 bytes
-ifce=IFCE   IP address of the physical interface to use. Default: NULL (ANY)
-ttl=TTL     time to live for multicast packets. Default: 1
-sdp=Name    file name of the generated SDP. Default: "session.sdp"

Live scene encoder options:
-dst=IP    destination IP - default: NULL
-port=PORT destination port - default: 7000
-mtu=MTU   path MTU for RTP packets. Default is 1450 bytes
-ifce=IFCE IP address of the physical interface to use. Default: NULL(ANY)
-ttl=TTL   time to live for multicast packets. Default: 1
-sdp=Name  ouput SDP file - default: session.sdp

-dims      turns on DIMS mode for SVG input - default: off
-no-rap    disabled RAP sending - this also disables carousel generation. Default: off
-src=file  source of updates - default: null
-rap=time  duration in ms of base carousel - default: 0 (off)
            you can specify the RAP period of a single ESID (not in DIMS):
                -rap=ESID=X:time

Runtime options:
q:         quits
u:         inputs some commands to be sent
U:         same as u but signals the updates as critical
e:         inputs some commands to be sent without being aggregated
E:         same as e but signals the updates as critical
f:         forces RAP sending
F:         forces RAP regeneration and sending
p:         dumps current scene

GPAC version: 0.5.2-DEV-rev99-gb44dfd1-master
Supported ISO 639 languages and codes:

Abkhazian (abk - ab)
Achinese (ace - )
Acoli (ach - )
Adangme (ada - )
Adyghe; Adygei (ady - )
Afar (aar - aa)
Afrihili (afh - )
Afrikaans (afr - af)
Afro-Asiatic languages (afa - )
Ainu (ain - )
Akan (aka - ak)
Akkadian (akk - )
Albanian (sqi - sq)
Aleut (ale - )
Algonquian languages (alg - )
Altaic languages (tut - )
Amharic (amh - am)
Angika (anp - )
Apache languages (apa - )
Arabic (ara - ar)
Aragonese (arg - an)
Arapaho (arp - )
Arawak (arw - )
Armenian (hye - hy)
Aromanian; Arumanian; Macedo-Romanian (rup - )
Artificial languages (art - )
Assamese (asm - as)
Asturian; Bable; Leonese; Asturleonese (ast - )
Athapascan languages (ath - )
Australian languages (aus - )
Austronesian languages (map - )
Avaric (ava - av)
Avestan (ave - ae)
Awadhi (awa - )
Aymara (aym - ay)
Azerbaijani (aze - az)
Balinese (ban - )
Baltic languages (bat - )
Baluchi (bal - )
Bambara (bam - bm)
Bamileke languages (bai - )
Banda languages (bad - )
Bantu languages (bnt - )
Basa (bas - )
Bashkir (bak - ba)
Basque (eus - eu)
Batak languages (btk - )
Beja; Bedawiyet (bej - )
Belarusian (bel - be)
Bemba (bem - )
Bengali (ben - bn)
Berber languages (ber - )
Bhojpuri (bho - )
Bihari languages (bih - bh)
Bikol (bik - )
Bini; Edo (bin - )
Bislama (bis - bi)
Blin; Bilin (byn - )
Blissymbols; Blissymbolics; Bliss (zbl - )
Bokmal, Norwegian; Norwegian Bokmal (nob - nb)
Bosnian (bos - bs)
Braj (bra - )
Breton (bre - br)
Buginese (bug - )
Bulgarian (bul - bg)
Buriat (bua - )
Burmese (mya - my)
Caddo (cad - )
Catalan; Valencian (cat - ca)
Caucasian languages (cau - )
Cebuano (ceb - )
Celtic languages (cel - )
Central American Indian languages (cai - )
Central Khmer (khm - km)
Chagatai (chg - )
Chamic languages (cmc - )
Chamorro (cha - ch)
Chechen (che - ce)
Cherokee (chr - )
Cheyenne (chy - )
Chibcha (chb - )
Chichewa; Chewa; Nyanja (nya - ny)
Chinese (zho - zh)
Chinook jargon (chn - )
Chipewyan; Dene Suline (chp - )
Choctaw (cho - )
Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church}  S{ lavonic (chu - cu)
Chuukese (chk - )
Chuvash (chv - cv)
Classical Newari; Old Newari; Classical Nepal Bhasa (nwc - )
Classical Syriac (syc - )
Coptic (cop - )
Cornish (cor - kw)
Corsican (cos - co)
Cree (cre - cr)
Creek (mus - )
Creoles and pidgins (crp - )
Creoles and pidgins, English based (cpe - )
Creoles and pidgins, French-based (cpf - )
Creoles and pidgins, Portuguese-based (cpp - )
Crimean Tatar; Crimean Turkish (crh - )
Croatian (hrv - hr)
Cushitic languages (cus - )
Czech (ces - cs)
Dakota (dak - )
Danish (dan - da)
Dargwa (dar - )
Delaware (del - )
Dinka (din - )
Divehi; Dhivehi; Maldivian (div - dv)
Dogri (doi - )
Dogrib (dgr - )
Dravidian languages (dra - )
Duala (dua - )
Dutch, Middle (ca.1050-1350) (dum - )
Dutch; Flemish (nld - nl)
Dyula (dyu - )
Dzongkha (dzo - dz)
Eastern Frisian (frs - )
Efik (efi - )
Egyptian (Ancient) (egy - )
Ekajuk (eka - )
Elamite (elx - )
English (eng - en)
English, Middle (1100-1500) (enm - )
English, Old (ca.450-1100) (ang - )
Erzya (myv - )
Esperanto (epo - eo)
Estonian (est - et)
Ewe (ewe - ee)
Ewondo (ewo - )
Fang (fan - )
Fanti (fat - )
Faroese (fao - fo)
Fijian (fij - fj)
Filipino; Pilipino (fil - )
Finnish (fin - fi)
Finno-Ugrian languages (fiu - )
Fon (fon - )
French (fra - fr)
French, Middle (ca.1400-1600) (frm - )
French, Old (842-ca.1400) (fro - )
Friulian (fur - )
Fulah (ful - ff)
Ga (gaa - )
Gaelic; Scottish Gaelic (gla - gd)
Galibi Carib (car - )
Galician (glg - gl)
Ganda (lug - lg)
Gayo (gay - )
Gbaya (gba - )
Geez (gez - )
Georgian (kat - ka)
German (deu - de)
German, Middle High (ca.1050-1500) (gmh - )
German, Old High (ca.750-1050) (goh - )
Germanic languages (gem - )
Gilbertese (gil - )
Gondi (gon - )
Gorontalo (gor - )
Gothic (got - )
Grebo (grb - )
Greek, Ancient (to 1453) (grc - )
Greek, Modern (1453-) (ell - el)
Guarani (grn - gn)
Gujarati (guj - gu)
Gwich'in (gwi - )
Haida (hai - )
Haitian; Haitian Creole (hat - ht)
Hausa (hau - ha)
Hawaiian (haw - )
Hebrew (heb - he)
Herero (her - hz)
Hiligaynon (hil - )
Himachali languages; Western Pahari languages (him - )
Hindi (hin - hi)
Hiri Motu (hmo - ho)
Hittite (hit - )
Hmong; Mong (hmn - )
Hungarian (hun - hu)
Hupa (hup - )
Iban (iba - )
Icelandic (isl - is)
Ido (ido - io)
Igbo (ibo - ig)
Ijo languages (ijo - )
Iloko (ilo - )
Inari Sami (smn - )
Indic languages (inc - )
Indo-European languages (ine - )
Indonesian (ind - id)
Ingush (inh - )
Interlingua (International Auxiliary Language Association) (ina - ia)
Interlingue; Occidental (ile - ie)
Inuktitut (iku - iu)
Inupiaq (ipk - ik)
Iranian languages (ira - )
Irish (gle - ga)
Irish, Middle (900-1200) (mga - )
Irish, Old (to 900) (sga - )
Iroquoian languages (iro - )
Italian (ita - it)
Japanese (jpn - ja)
Javanese (jav - jv)
Judeo-Arabic (jrb - )
Judeo-Persian (jpr - )
Kabardian (kbd - )
Kabyle (kab - )
Kachin; Jingpho (kac - )
Kalaallisut; Greenlandic (kal - kl)
Kalmyk; Oirat (xal - )
Kamba (kam - )
Kannada (kan - kn)
Kanuri (kau - kr)
Kara-Kalpak (kaa - )
Karachay-Balkar (krc - )
Karelian (krl - )
Karen languages (kar - )
Kashmiri (kas - ks)
Kashubian (csb - )
Kawi (kaw - )
Kazakh (kaz - kk)
Khasi (kha - )
Khoisan languages (khi - )
Khotanese; Sakan (kho - )
Kikuyu; Gikuyu (kik - ki)
Kimbundu (kmb - )
Kinyarwanda (kin - rw)
Kirghiz; Kyrgyz (kir - ky)
Klingon; tlhIngan-Hol (tlh - )
Komi (kom - kv)
Kongo (kon - kg)
Konkani (kok - )
Korean (kor - ko)
Kosraean (kos - )
Kpelle (kpe - )
Kru languages (kro - )
Kuanyama; Kwanyama (kua - kj)
Kumyk (kum - )
Kurdish (kur - ku)
Kurukh (kru - )
Kutenai (kut - )
Ladino (lad - )
Lahnda (lah - )
Lamba (lam - )
Land Dayak languages (day - )
Lao (lao - lo)
Latin (lat - la)
Latvian (lav - lv)
Lezghian (lez - )
Limburgan; Limburger; Limburgish (lim - li)
Lingala (lin - ln)
Lithuanian (lit - lt)
Lojban (jbo - )
Low German; Low Saxon; German, Low; Saxon, Low (nds - )
Lower Sorbian (dsb - )
Lozi (loz - )
Luba-Katanga (lub - lu)
Luba-Lulua (lua - )
Luiseno (lui - )
Lule Sami (smj - )
Lunda (lun - )
Luo (Kenya and Tanzania) (luo - )
Lushai (lus - )
Luxembourgish; Letzeburgesch (ltz - lb)
Macedonian (mkd - mk)
Madurese (mad - )
Magahi (mag - )
Maithili (mai - )
Makasar (mak - )
Malagasy (mlg - mg)
Malay (msa - ms)
Malayalam (mal - ml)
Maltese (mlt - mt)
Manchu (mnc - )
Mandar (mdr - )
Mandingo (man - )
Manipuri (mni - )
Manobo languages (mno - )
Manx (glv - gv)
Maori (mri - mi)
Mapudungun; Mapuche (arn - )
Marathi (mar - mr)
Mari (chm - )
Marshallese (mah - mh)
Marwari (mwr - )
Masai (mas - )
Mayan languages (myn - )
Mende (men - )
Mi'kmaq; Micmac (mic - )
Minangkabau (min - )
Mirandese (mwl - )
Mohawk (moh - )
Moksha (mdf - )
Mon-Khmer languages (mkh - )
Mongo (lol - )
Mongolian (mon - mn)
Mossi (mos - )
Multiple languages (mul - )
Munda languages (mun - )
N'Ko (nqo - )
Nahuatl languages (nah - )
Nauru (nau - na)
Navajo; Navaho (nav - nv)
Ndebele, North; North Ndebele (nde - nd)
Ndebele, South; South Ndebele (nbl - nr)
Ndonga (ndo - ng)
Neapolitan (nap - )
Nepal Bhasa; Newari (new - )
Nepali (nep - ne)
Nias (nia - )
Niger-Kordofanian languages (nic - )
Nilo-Saharan languages (ssa - )
Niuean (niu - )
No linguistic content; Not applicable (zxx - )
Nogai (nog - )
Norse, Old (non - )
North American Indian languages (nai - )
Northern Frisian (frr - )
Northern Sami (sme - se)
Norwegian (nor - no)
Norwegian Nynorsk; Nynorsk, Norwegian (nno - nn)
Nubian languages (nub - )
Nyamwezi (nym - )
Nyankole (nyn - )
Nyoro (nyo - )
Nzima (nzi - )
Occitan (post 1500) (oci - oc)
Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE) (arc - )
Ojibwa (oji - oj)
Oriya (ori - or)
Oromo (orm - om)
Osage (osa - )
Ossetian; Ossetic (oss - os)
Otomian languages (oto - )
Pahlavi (pal - )
Palauan (pau - )
Pali (pli - pi)
Pampanga; Kapampangan (pam - )
Pangasinan (pag - )
Panjabi; Punjabi (pan - pa)
Papiamento (pap - )
Papuan languages (paa - )
Pedi; Sepedi; Northern Sotho (nso - )
Persian (fas - fa)
Persian, Old (ca.600-400 B.C.) (peo - )
Philippine languages (phi - )
Phoenician (phn - )
Pohnpeian (pon - )
Polish (pol - pl)
Portuguese (por - pt)
Prakrit languages (pra - )
Pushto; Pashto (pus - ps)
Quechua (que - qu)
Rajasthani (raj - )
Rapanui (rap - )
Rarotongan; Cook Islands Maori (rar - )
Reserved for local use (qaa-qtz - )
Romance languages (roa - )
Romanian; Moldavian; Moldovan (ron - ro)
Romansh (roh - rm)
Romany (rom - )
Rundi (run - rn)
Russian (rus - ru)
Salishan languages (sal - )
Samaritan Aramaic (sam - )
Sami languages (smi - )
Samoan (smo - sm)
Sandawe (sad - )
Sango (sag - sg)
Sanskrit (san - sa)
Santali (sat - )
Sardinian (srd - sc)
Sasak (sas - )
Scots (sco - )
Selkup (sel - )
Semitic languages (sem - )
Serbian (srp - sr)
Serer (srr - )
Shan (shn - )
Shona (sna - sn)
Sichuan Yi; Nuosu (iii - ii)
Sicilian (scn - )
Sidamo (sid - )
Sign Languages (sgn - )
Siksika (bla - )
Sindhi (snd - sd)
Sinhala; Sinhalese (sin - si)
Sino-Tibetan languages (sit - )
Siouan languages (sio - )
Skolt Sami (sms - )
Slave (Athapascan) (den - )
Slavic languages (sla - )
Slovak (slk - sk)
Slovenian (slv - sl)
Sogdian (sog - )
Somali (som - so)
Songhai languages (son - )
Soninke (snk - )
Sorbian languages (wen - )
Sotho, Southern (sot - st)
South American Indian languages (sai - )
Southern Altai (alt - )
Southern Sami (sma - )
Spanish; Castilian (spa - es)
Sranan Tongo (srn - )
Sukuma (suk - )
Sumerian (sux - )
Sundanese (sun - su)
Susu (sus - )
Swahili (swa - sw)
Swati (ssw - ss)
Swedish (swe - sv)
Swiss German; Alemannic; Alsatian (gsw - )
Syriac (syr - )
Tagalog (tgl - tl)
Tahitian (tah - ty)
Tai languages (tai - )
Tajik (tgk - tg)
Tamashek (tmh - )
Tamil (tam - ta)
Tatar (tat - tt)
Telugu (tel - te)
Tereno (ter - )
Tetum (tet - )
Thai (tha - th)
Tibetan (bod - bo)
Tigre (tig - )
Tigrinya (tir - ti)
Timne (tem - )
Tiv (tiv - )
Tlingit (tli - )
Tok Pisin (tpi - )
Tokelau (tkl - )
Tonga (Nyasa) (tog - )
Tonga (Tonga Islands) (ton - to)
Tsimshian (tsi - )
Tsonga (tso - ts)
Tswana (tsn - tn)
Tumbuka (tum - )
Tupi languages (tup - )
Turkish (tur - tr)
Turkish, Ottoman (1500-1928) (ota - )
Turkmen (tuk - tk)
Tuvalu (tvl - )
Tuvinian (tyv - )
Twi (twi - tw)
Udmurt (udm - )
Ugaritic (uga - )
Uighur; Uyghur (uig - ug)
Ukrainian (ukr - uk)
Umbundu (umb - )
Uncoded languages (mis - )
Undetermined (und - )
Upper Sorbian (hsb - )
Urdu (urd - ur)
Uzbek (uzb - uz)
Vai (vai - )
Venda (ven - ve)
Vietnamese (vie - vi)
Votic (vot - )
Wakashan languages (wak - )
Walloon (wln - wa)
Waray (war - )
Washo (was - )
Welsh (cym - cy)
Western Frisian (fry - fy)
Wolaitta; Wolaytta (wal - )
Wolof (wol - wo)
Xhosa (xho - xh)
Yakut (sah - )
Yao (yao - )
Yapese (yap - )
Yiddish (yid - yi)
Yoruba (yor - yo)
Yupik languages (ypk - )
Zande languages (znd - )
Zapotec (zap - )
Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki (zza - )
Zenaga (zen - )
Zhuang; Chuang (zha - za)
Zulu (zul - zu)
Zuni (zun - )
